iOS 18 引入了一种新的小组件渲染模式,称为 accented 模式(强调色模式),它会使用系统定义的强调色对小组件的内容进行统一染色。为支持该行为,Scripting app 提供了三个视图修饰符:
widgetAccentable
widgetAccentedRenderingMode
widgetBackground
这些修饰符让你可以精确控制小组件中哪些部分参与系统的染色逻辑,从而创建更具层次感和适配性的界面。
widgetAccentable
将视图及其所有子视图标记为 accented group(强调组) 的一部分。当小组件处于 accented 渲染模式 时,系统会分别为强调组与默认组应用不同的色调。染色过程仿照模板图像的方式 —— 系统会忽略你设置的颜色,仅使用视图的 alpha(透明度)进行渲染。
这个修饰符有助于在 tinted 小组件中实现清晰的层次分离效果。
说明:
Text
使用了 widgetAccentable
,将被系统染色为强调色;Text
属于默认组,通常被染为较浅的颜色。widgetAccentedRenderingMode
(用于 Image
组件)控制 Image
在 accented 模式 下的渲染方式。可用于调整图像在染色模式下的外观处理。
'accented'
:将图像加入强调组,使用强调色渲染。'accentedDesaturated'
:将图像亮度转为 alpha 后使用强调色染色。'desaturated'
:将图像亮度转为 alpha 后使用默认组色调染色。'fullColor'
:保留图像原始颜色,不进行染色(仅适用于 iOS 系统图像)。该设置可确保图像保留完整颜色,适合用于品牌 Logo 或需要保持清晰度的图像内容。
widgetBackground
widgetBackground
修饰符用于在小组件中设置背景样式,并自动适配 iOS 18 的 accented 模式。当小组件处于 accented 模式时,该背景会自动隐藏,避免被系统强制染色为白色。
iOS 18 会忽略背景颜色,除非设置透明度(alpha)。使用 widgetBackground
可以放心地定义装饰性背景,而不必担心其在染色模式下显示异常。
提示:可用形状包括
'rect'
、'circle'
、'capsule'
、'ellipse'
、'buttonBorder'
、'containerRelative'
,也支持自定义圆角矩形。
widgetAccentable
配合使用,可实现分层布局,保持视觉清晰度。alpha < 1
。例如纯色背景会被渲染为白色。alpha = 1
会获得强烈染色效果,而 alpha = 0.3
更加柔和。widgetBackground
代替 background
,以确保背景在 accented 模式下能够被正确隐藏。该布局:
widgetAccentable
精确标记需要染色的内容,避免误将整个小组件标记为强调组;widgetAccentedRenderingMode="fullColor"
;widgetBackground
替代 background
,以确保背景能在强调模式下正确处理;alpha < 1
)可保留层次感,避免全部被染为纯白。